package org.jiuling.aliyun.sms.factory.service.verify;

import org.jiuling.aliyun.sms.exception.AliYunSMSRuntimeException;
import org.jiuling.basics.validation.Assertions;
import org.jiuling.basics.validation.ListVerify;

import java.util.List;
import java.util.Map;

/**
 * 阿里云发送短信校验
 * @author 紫灵
 * @date 2023年03月02日 15时55分15秒
 */
public class AliYunSendSmsVerify {

    /**
     * 校验发送短信参数
     * @param signName 签名
     * @param phoneNumber 手机号
     * @param templateCode 模板代码
     */
    public static void sendSmsParam(String signName,String phoneNumber, String templateCode){
        Assertions.StringAssertions.isNotBlank("签名不能为空！",signName);
        Assertions.StringAssertions.isNotBlank("手机号不能为空！",phoneNumber);
        Assertions.StringAssertions.isNotBlank("模板代码不能为空！",templateCode);
    }

    /**
     * 校验发送批量短信参数
     * @param signNameList 签名列表
     * @param phoneNumberList 手机号列表
     * @param templateCode 模板代码
     * @param templateParamList 模板参数列表
     */
    public static void sendBatchSmsParam(List<String> signNameList, List<String> phoneNumberList, String templateCode, List<Map<String,Object>> templateParamList){
        Assertions.ListAssertions.isNotNull("签名列表不能为空！",signNameList);
        Assertions.ListAssertions.isNotNull("手机号列表不能为空！",phoneNumberList);
        // 最大手机号数量
        int maxphoneNumberNum = 100;
        if(phoneNumberList.size() > maxphoneNumberNum){
            throw new AliYunSMSRuntimeException("批量发送短信数量不能超过100条！");
        }
        if(signNameList.size() != phoneNumberList.size()){
            throw new AliYunSMSRuntimeException("签名数量与手机号数量不一致！");
        }
        if(!ListVerify.isEmpty(templateParamList) && (phoneNumberList.size() != templateParamList.size())){
            throw new AliYunSMSRuntimeException("手机号数量与模板参数数量不一致！");
        }
        Assertions.StringAssertions.isNotBlank("模板代码不能为空！",templateCode);
    }

}
